from abc import ABC, abstractmethod
from typing import List

from llama_index.core.schema import BaseNode, NodeWithScore
from llama_index.core import QueryBundle


class NodePostprocessorInterface(ABC):
    """
    一个标准接口，用于在检索到初步的节点列表后，对其进行后处理。
    这可以用于重排序 (re-ranking)、过滤 (filtering) 或其他任何形式的优化。
    """

    @abstractmethod
    def postprocess_nodes(
        self, nodes: List[NodeWithScore], query_bundle: QueryBundle
    ) -> List[NodeWithScore]:
        """
        对节点列表进行后处理。

        Args:
            nodes: 从向量存储中初步检索到的、包含分数的节点列表。
            query_bundle: 包含原始查询字符串等信息的查询包裹对象。

        Returns:
            经过处理和优化的、包含分数的节点列表。
        """
        pass 